<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // function printfInput(content) {
        //     // 将用户输入的内容, 在页面中显示
        //     document.write(content)
        // }
        // let constr = prompt('请输入内容')
        // printfInput(constr)
        //1. 封装函数, 名字为sum
        // 2. 功能: 根据传入的两个数, 求和并且返回求和的结果（函数必须有return返回值）
        // function sum(a, b) {
        //     return a + b
        // }
        // let arr = sum(1, 2)
        // console.log(arr);

        //目的:  封装函数, 复习函数的基本写法。

        // 需求：实现两个数的值交换(函数版本)

        // 分析:

        // 1. 函数名为 changeNum()
        // 2. 调用函数时, changeNum(1，2)
        // 3. 经过函数内部处理后, 输出  第一个值的结果是2  第二个值的结果是1
        // 4. 可以多调用两次
        // function changeNum(a, b) {
        //     let c = a
        //     a = b
        //     b = c
        //     console.log(a, b);
        // }
        // changeNum(1, 2)
        // changeNum(2, 1)
        // changeNum(1, 2)


        // 目的: 复习函数的声明与调用

        //     题目：封装余额函数

        //     要求:

        //     1. 运行程序后, 浏览器显示输入确认框(prompt)
        //     2. 第一个输入确认框提示输入银行卡余额
        //     3. 第二个输入确认框提示输入当月食宿消费金额
        //     4. 第三个输入确认框提示输入当月生活消费金额
        //     5. 输入完毕后, 在页面中显示银行卡剩余金额
        //     6. 提示: 所有功能代码封装在函数内部（函数需要把余额返回）

        // function str() {
        //     let ze = +prompt('请输入银行卡总额')
        //     let shisu = +prompt('请输入食宿总额')
        //     let shf = +prompt('请输入生活费总额')
        //     ze = ze - shisu - shf
        //     return ze
        // }
        // let obj = str()
        // alert(`生活费还剩${obj}大洋`)

        // 目标： 封装一个函数, 可以求任意数组的和 或 平均值

        //     要求：

        //     - 函数可以传递2个参数，比如  handleData(arr, true)      handleData 处理数据的意思
        //         - 参数一： 接受实参传递过来的数组
        //             - 参数二:    布尔类型  如果是true或者不传递参数 是求和操作，   如果传递过来的参数是 false 则是求平均值
        // 封装一个函数 接受连个参数 一个是数组 一个是布尔值 通过接受的第二个参数进行判断 是否求和 还是求平均值 
        // 给obj一个默认值 没有参数的时候 可以使用自己的默认值
        function han(arr, obj = true) {
            //定义一个变量来当作求和的值 
            let qu = 0
            //通过传过来的的二个参数 进行判断 如果是true 执行第一个循环的代码 如果false 则执行第二行循环
            if (obj) {
                for (let i = 0; i < arr.length; i++) {
                    qu += arr[i]
                }
            } else {
                for (let i = 0; i < arr.length; i++) {
                    qu = qu + arr[i]

                }
                // qu 的平均值 不可以写在里面 如果也会更着循环
                qu = qu / arr.length
            }
            //把求出来的结果 返回出去 
            return qu
        }
        //定义两个实参 第一个是数组 第二个是布尔值 
        // 调用函数时把参数传递过去 
        let arr = [1, 2, 3, 4, 5]
        // obj = false 可以不写
        let obj = false
        
        let arr1 = han(arr, obj)
        document.write(`是${arr1}`)







    </script>
</body>

</html>